home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / earcd / sviluppo / svilupp2 / amphn192.lha / src / delfphone.c < prev    next >
C/C++ Source or Header  |  1996-11-16  |  1KB  |  75 lines

  1.  
  2. #include <proto/exec.h>
  3. #include <proto/utility.h>
  4.  
  5. #include <exec/interrupts.h>
  6. #include <stdio.h>
  7. #include <dos/dos.h>
  8.  
  9. #define BUFSIZE 1024
  10. //#define PACKETSIZE BUFSIZE          /* no compr */
  11. //#define PACKETSIZE BUFSIZE/4        /* adpcm1 */
  12. #define PACKETSIZE BUFSIZE*3/8    /* adpcm2 */
  13. #define COMPR 2
  14.  
  15. /* prototypes */
  16. BOOL InitDelfina(void);
  17. void CleanupDelfina(void);
  18. BOOL StartDelfina(int, int, int);
  19. void StopDelfina(void);
  20. int DelfPacket(void *,int);
  21.  
  22.  
  23. char diskbuf[PACKETSIZE];
  24. extern int delfrate, delfsig;
  25.  
  26. int main(char **argv, int argc)
  27. {
  28.     FILE *fh;
  29.     int rate,sigmask;
  30.     
  31.     if (argc!=3) {
  32.         printf("Usage: delfphone <samplerate> <outfile>\n");
  33.         return(10);
  34.     }
  35.     
  36. /* get samplerate*/    
  37.     rate=atoi(argv[1]);
  38.     
  39. /* open output file */
  40.     if (!(fh=fopen(argv[2],"wb"))) {
  41.         printf("no file!\n");
  42.         return(10);
  43.     }
  44.     
  45. /*    Init delfina stuff */
  46.     if (!InitDelfina()) {
  47.         printf("Delfina init failed!\n");
  48.         fclose(fh);
  49.         return(10);
  50.     }
  51.     if (!StartDelfina(rate,BUFSIZE,COMPR)) {
  52.         printf("Delfina startup failed!\n");
  53.         CleanupDelfina();
  54.         fclose(fh);
  55.         return(10);
  56.     }
  57.     
  58. /* write header */    
  59.     fwrite("ADPCM3",6,1,fh);
  60.     fwrite(&delfrate,4,1,fh);
  61.     printf("Actual samplerate: %d\n",delfrate);
  62.     
  63. /* main loop */    
  64.     sigmask=delfsig | SIGBREAKF_CTRL_C;
  65.     
  66.     while (!(Wait(sigmask) & SIGBREAKF_CTRL_C)) {
  67.         DelfPacket(diskbuf,PACKETSIZE);
  68.         fwrite(diskbuf,PACKETSIZE,1,fh);
  69.     }        
  70.         
  71.     StopDelfina();    
  72.     CleanupDelfina();
  73.     fclose(fh);
  74. }
  75.